import axios from 'axios'
import store from '@/store'
import { Toast } from 'vant'
import errorCode from '@/utils/errorCode'
// 根据环境不同引入不同api地址
import { baseApi } from '@/config'
import { getToken, setToken, removeToken } from '@/utils/auth'
// create an axios instance
const service = axios.create({
  baseURL: process.env.VUE_APP_BASE_API, // url = base api url + request url
  withCredentials: true, // send cookies when cross-domain requests
  timeout: 300000 // request timeout
})

// request拦截器 request interceptor
service.interceptors.request.use(
  config => {
    // 不传递默认开启loading
    // if (!config.hideloading) {
    //   // loading
    //   Toast.loading({
    //     forbidClick: true
    //   })
    // }
    // console.log('config:',config,config.method);
    if (getToken()) {
      config.headers['XX-Token'] = getToken();
      config.headers['XX-Device-Type'] = 'web'
      // console.log('config:',config);
      // if(config.method.toLocaleLowerCase() =='get'){
      //   // config.params.token=getToken();
      //   config.params = { 
      //     ...config.params, 
      //     token:getToken()
      //   } 
      //   // console.log('get请求',config);
      // }
      // if(config.method.toLocaleLowerCase() =='post'){
      //   // config.data.token=getToken();
      //   config.data = { 
      //     ...config.data, 
      //     token:getToken()
      //   } 
      //   console.log('post请求：',config);
      // }
    }
    return config
  },
  error => {
    // do something with request error
    console.log(error) // for debug
    return Promise.reject(error)
  }
)
// respone拦截器
service.interceptors.response.use(
  response => {
    // Toast.clear()
    const res = response.data;
    const msg = errorCode[res.code] || res.msg || errorCode['default'];
    if (res.code === 1001) {
      // 登录失效
      store.dispatch('user/logout').then(() => {
        location.reload()
      })
      return Promise.reject(new Error(res.msg || 'Error'))
    }else if (res.code !== 1) {
      Toast(msg);
      return Promise.reject('error')
    } else {
      return res;
    }
  },
  error => {
    console.log('err:' + error) // for debug
    let { message } = error;
    if (message == "Network Error") {
      message = "后端接口连接异常";
    }
    else if (message.includes("timeout")) {
      message = "系统接口请求超时";
    }
    Toast.clear();
    Toast(message);
    return Promise.reject(error)
  }
)

export default service
